
// interface  接口

// 在 TypeScript 中，我们使用接口（Interfaces）来定义对象的类型。

// 定义对象的类型  (提前定义了使用此类型的对象 要有的属性和方法  => 不能多余或缺少属性)
// interface Person {
//     name: string,
//     age: number,
//     say(con: string): void
// }

// var tom: Person = {
//     name: "张三",
//     age: 18,
//     say: function (con) {
//         console.log(con);
//     }
// }


// 可选参数
// interface Person {
//     name: string,
//     age?: number,
//     say?(con: string): void
// }

// var jack: Person = {
//     name: "Jack",
//     age: 25
// }

// 任意属性   // 可以没有 => 也可以有多个
/* interface Person {
    name: string,
    age: number,
    [propName: string]: any, // 可以没有 => 也可以有多个
}
var liSi: Person = {
    name: "李四",
    age: 25,
    height: "173",
    weight: "70kg",
} */


// 注意 如果任意属性的属性名是字符串[propName:string], ，一旦定义了任意属性，那么确定属性和可选属性的类型都必须是它的类型的子集
// 可以理解为:  任意类型 囊括了对所有属性名/属性值的要求
/* interface Person {
    name: string,  // 确定属性
    age?: number,  // 可选属性
    [propName: string]: string | number,
}
var liSi: Person = {
    name: "李四",
    age: 25,
    height: "173",
    weight: "70kg",
} */


// 只读属性  (字段只能在创建的时候被赋值,之后无法修改)

interface Person {
    readonly name: string,  // 确定属性
    readonly age: number,  // 可选属性
    [propName: string]: string | number,
}

var wang: Person = {
    name: "王五",
    age: 22,
}

// wang.name = "王六";  //报错


export default 100;